
var staffListUrl = "/GetStaffAllServlet";


/**
 * jquery  js 初始化得使用调用 $(function(){
 *
 * })
 */
$(function () {
    // 初始化 分页列表
    staffManage.initList();

})
var staffManage = {};

// 初始化   staffList table
/**
 * 1.给他请求路径，并设置请求方式  返回的东西：1.data 数据bean列表（一个员工的集合）
 * 2.给设置请求参数
 *  {
        "pageNumber": params.pageNumber, //当前页数
        "pageSize": params.pageSize, //每页条数
        "searchStaffId": $("#searchStaffId").val(),  // 单个搜索 的id
        "searchName": $("#searchName").val()       // 单个搜索员工的的名字
    }
 3. 设置行点击事件  可以不设置  row 就是  每一行数据 对象
    onClickRow: function (e, row, element) {  // 设置行点击事件***************************
             alert('监控行点击事件：'+row.id)
        },
  4. 设置网络请求到的数据
    result.data.count, //总条数
     result.data.list    List<Staff>   员工集合
     responseHandler: function (result) {   // 通过网络请求得到   数据进行解析初始化*******************************
            console.log(result.data.count);
            if (result != null) {
                return {
                    'total': result.data.count, //总条数*************************************
                    'rows': result.data.list //所有的数据**********************************
                };
            }
            return {
                'total': 0, //总条数
                'rows': [] //所有的数据
            }
        }
    5.配置列表显示
     //列表显示
     columns: [{   // 配置显示的列表 ****************************
                field: 'id',
                title: "商品编号",
                visible: false
            }, {
                field: 'staffId',
                title: "员工编号"
            }, {
                field: 'staffName',
                title: "员工姓名"
            },
    // 其中
        events: buttonOperateEvent, // 设置每一行按钮的 点击事件
 */


//将一个方法function  赋值给  staffManage.initList
/**
 * bootstrapTable 自带ajax 网络请求功能 数据处理  表单显示功能
 * 1. url: staffListUrl  发起网络请求  需要数据 1.总共有多少条数据  2.当前页得数据 集合
 * 2.  queryParams: staffManage.queryParams   设置请求的参数（ 1.当前页码  2.页码的大小）
 */
staffManage.initList = function () {
    $("#staffList").bootstrapTable({
        url: staffListUrl, //请求路径 **********************************
        method: 'post', //请求方式(*)
        contentType: 'application/x-www-form-urlencoded', //使用from表单方式提交(*)
        toolbar: '#toolbar', //工具按钮的容器
        striped: true, //是否启用隔行变色
        cache: false, //使用是否缓存 默认为true,所以一般情况下需要设置一下为false (*)
        pagination: true, //是否显示分页(*)
        sortable: false, //使用启用排序
        sortOrder: 'desc', //排序方式
        queryParams: staffManage.queryParams, //传递参数(*)  *************************************************
        queryParamsType: '',
        sidePagination: 'server', // 分页方式有两种 1.client 客户端分页  2.server分页
        pageNumber: 1, //初始化页数为第一页  显示第几页
        pageSize: 5, //默认每页加载行数
        pageList: [10, 25, 50, 100], //每页可选择记录数
        strictSearch: true,
        showColumns: false, // 是否显示所有的列
        showRefresh: false, // 是否显示刷新按钮
        minimumCountColumns: 2, // 最少允许的列数
        clickToSelect: true, // 是否启用点击选中行
        uniqueId: "id", // 每一行的唯一标识，一般为主键列
        showToggle: false, // 是否显示详细视图和列表视图的切换按钮
        cardView: false, // 是否显示详细视图
        detailView: false, // 是否显示父子表
        smartDisplay: false,
        onClickRow: function ( row,e, element) {  // 设置行点击事件***************************
             alert('监控行点击事件：'+row.staffId)
        },
        responseHandler: function (result) {   // 通过网络请求得到   数据进行解析初始化*******************************
            console.log(result.data.count);
            if (result.status==1) {
                return {
                    'total': result.data.count, //总条数*************************************
                    'rows': result.data.list //所有的数据**********************************
                };
            }
            return {
                'total': 0, //总条数
                'rows': [] //所有的数据
            }
        },
        //列表显示
        columns: [{   // 配置显示的列表 ****************************
            field: 'id',
            title: "商品编号",
            visible: false
        }, {
            field: 'staffId',
            title: "员工编号"
        }, {
            field: 'staffName',
            title: "员工姓名"
        }, {
            field: 'idCard',
            title: "员工年龄",
            formatter: function (value) {    //根据需求 进行第二次配置***********************************
                var res = "-";
                if (value != "" && value != null) {
                    res = value.substr(6, 4) + "/" + value.substr(10, 2) + "/" + value.substr(12, 2);
                    res = staffManage.getNow(res + " 00:00:00");
                }
                return res;
            }
        }, {
            field: 'phone',
            title: "员工手机号"
        }, {
            field: 'idCard',
            title: "员工身份证"
        }, {
            field: 'address',
            title: "员工地址"
        }, {
            field: 'status',
            title: "状态",
            formatter: function (value) {
                switch (value) {
                    case 1 :
                        return "在职";
                    case 2 :
                        return "离职";
                    case 3 :
                        return "黑名单";
                }
            }
        }, {
            field: 'roleName',
            title: "角色"
        }, {
            field: 'momo',
            title: "备注"
        }, {
            field: 'createdTime',
            title: "创建时间"
        }, {
            field: 'operation',
            events: buttonOperateEvent, // 设置每一行按钮的 点击事件*********************************
            title: '操作',
            formatter: function (value, row, index) {  // 为当前行增加 按钮*******************
                return staffManage.buttonOption(value, row, index);
            }
        }
        ]
    });
}

/**
 * 获取具体的参数
 * @param params
 * @returns {{pageNumber: *, searchName: *, pageSize: *, searchStaffId: *}}
 */
staffManage.queryParams = function (params) {
    return {
        "pageNumber": params.pageNumber, //当前页数
        "pageSize": params.pageSize, //每页条数
        "searchStaffId": $("#searchStaffId").val(),
        "searchName": $("#searchName").val()
    }
}

/**
 * 按钮的点击事件
 * @type {{"click .delStaff": Window.buttonOperateEvent.click .delStaff, "click .updateStaff": Window.buttonOperateEvent.click .updateStaff}}
 */
window.buttonOperateEvent = {
    // 更新 员工 对应的 更新按钮的updateStaff
    'click .updateStaff': function (e, value, row, index) {
        //row 这一行的数据
        alert(row.staffName);
        // 初始化更新的模态框  能不能 把我们  修改 员工的模态显示出来
        //1.初始模态框内的数据
        //2.在模态框的确定按钮添加 事件  使用ajax 将用户修改的数据 提交到后台


    },
    // 删除员工 更新按钮的delStaff
    'click .delStaff': function (e, value, row, index) {
        staffManage.del(row);
    }
}
/**
 * 为每一行添加按钮
 * @param value
 * @param row
 * @param index
 * @returns {string}
 */
staffManage.buttonOption = function (value, row, index) {
    var returnButton = [];
    returnButton.push('<button class="btn btn-info updateStaff">修改</button>');
    returnButton.push('<button class="btn btn-danger delStaff">删除</button>');
    return returnButton.join('');
}

/**
 * 刷新列表
 */
staffManage.search = function () {
    //bootstrapTable 刷新
    $("#staffList").bootstrapTable('refresh');
}

staffManage.getNow = function (startTime) {
    //结束时间
    var date2 = new Date();
    //时间差的毫秒数
    var date3 = date2.getTime() - new Date(startTime).getTime();
    //计算出相差天数
    var days = Math.floor(date3 / (24 * 3600 * 1000));
    return parseInt(days / 365);
}

staffManage.del = function (row) {
    /**
     * 一般情况下删除要加confirm
     */
    Modal.confirm({
        msg: "确认当前操作"
    }).on(function (e) {
        if (e) {

            alert("使用ajax 执行 删除的动作 删除"+row.staffId);

        }
    })
}
